/**
 * 请求图片的的地址：
 * 将请求的操作放在主模块index.js文件中，
 * 将config.js和analyze.js文件引入这个模块，
 * 利用request模块请求图片的地址，得到DOM结构，
 * 将DOM结构给analyze的findImg方法处理，代码：
 * 
 */

const http = require('http');
const fs = require('fs');
const request = require('request');
const path = require('path');
const config = require('./config'); //配置模块  url,下载的本地路径
const analyze = require('./analyze'); // 使用 DOM 来操作网页的代码得到img的数量和下载路径


function start() {
    // 请求 网页的 文件路径 , 
    // request([网页的路径],[函数([错误的信息],[网页的信息=>jequery],[网页的body的信息])])
    request(config.url, function (err, res, body) {
        //console.log(!err && res );
        console.log('start');
        // 没有错误 并且res 有数据
        if (!err && res) {
            console.log('start');
            analyze.findImg(body, downLoad);
        }
    })
}

/**
 * @param {通过分析DOM结构得到图片地址后，
 * 利用request再次发送请求，
 * 将请求得到的数据写入本地即可，
 * 这里也将其封装为一个函数，
 * 追加在index.js文件中：} imgUrl 
 */
// 用于下载的函数([下载的图片路径],[下载的第几张图片])
function downLoad(imgUrl, i) {
    // imgUrl是图片的下载路径[string型] .split('.')=> 把imgUrl有点的位置分割添加到数组  .pop()=> 取出数组最后的一个元素
    let ext = imgUrl.split('.').pop();
    // ext 得到文件的后缀名 
    // 请求 imgUrl[图片下载路径] 通过管道 把下载的图片通过写入流的方法写入到img文件里面
    // path.join() 是文件的路径
    request(imgUrl).pipe(fs.createWriteStream(path.join(config.imgDir, i + '.' + ext), {
        'enconding': 'binary'
    }))

    //console.log(i);
}

start();

